function depart_from_queue_1()
% Funcion:   depart_from_queue_1
% Proposito: Funcion de los eventos de partidas a cola 2
%
%
global Q_LIMIT;
global BUSY;
global IDLE;

global next_event_type;
global num_custs_delayed;
global time_limit;
global num_events;
global num_in_q;
global server_status;

global area_num_in_q;
global area_server_status;
global total_time_in_system;
global mean_arrival_1;
global service_1_params;
global service_2_params;
global time;
global time_arrival;
global time_last_event;
global time_next_event;
global total_of_delays;

% Chequea si la cola 1 esta vacia
	if ( num_in_q{1} == 0)
		% La cola esta vacia entonces, pone el servidor en libre
		server_status{1}      = IDLE;
		time_next_event(2) = 1.0e+30;
	else
		% La cola no esta vacia, entonces decrementa el numero de
		%  clientes en cola.
		num_in_q{1} = num_in_q{1} - 1;
		
		% Calcula el delay del cliente que esta comenzando a ser servido
		% y actualiza el acumulador del delay total
		delay            = time - time_arrival{1}(1);
		total_of_delays{1} = total_of_delays{1} + delay;

		% Incrementa el numero de clientes atendidos y programa la
		%  partida.
		num_custs_delayed{1} = num_custs_delayed{1} + 1;
		time_next_event(2) = time + uniform(service_1_params(1), service_1_params(2));

        %calculo tiempo total de cliente en sistema, y el maximo
        total_time_in_system = total_time_in_system + time_next_event(2) - time_arrival{1}(1);
        
		% Mueve cada cliente en la cola un lugar.
        for i = 1:num_in_q{1}
            time_arrival{1}(i) = time_arrival{1}(i + 1);
        end
	end
    
    % Chequea si el servidor 2 esta ocupado 
    if ( server_status{2} == BUSY )
        % Si el servidor 2 esta ocupado: incrementa el numero de
        % clientes en la cola 2.
        num_in_q{2} = num_in_q{2} + 1;
        
        % Chequea si no se excede la cantidad de clientes en cola
        if ( num_in_q{2} > Q_LIMIT )
            % La cola alcanzo su limite, entonces para la simulacion
            fprintf(outfile, '\nOverflow de la cola 2 a los %f minutos', time);
            return;
        end
        % Hay lugar en la cola, entonces almacena el tiempo de llegada del
        % cliente en arribo en el nuevo tiempo de arribo
        time_arrival{2}(num_in_q{2}) = time;
        
    else
        % El servidor 2 esta libre, entonces el cliente en arribo tiene un
        % delay igual a cero.
        delay            = 0.0;
        total_of_delays{2} = total_of_delays{2} + delay;
        
        % Incrementa el numero de clientes atendidos y pone el estatus
        % del servidor ocupado.
        server_status{2} = BUSY;
        
        % Programa una partida de sistema o una realimentacion
        if rand > .9
            time_next_event(3) = time + uniform(service_2_params(1), service_2_params(2));
            %calculo tiempo total de cliente en sistema
            total_time_in_system = total_time_in_system + time_next_event(3) - time;
        else
            time_next_event(4) = time + uniform(service_2_params(1), service_2_params(2));
            %calculo tiempo total de cliente en sistema
            total_time_in_system = total_time_in_system + time_next_event(4) - time;
        end
    end
return;

